/*
 * Flowable CMMN REST API
 * # flowable / flowəb(ə)l /    - a compact and highly efficient workflow and Business Process Management (BPM) platform for developers, system admins and business users.  - a lightning fast, tried and tested BPMN 2 process engine written in Java. It is Apache 2.0 licensed open source, with a committed community.  - can run embedded in a Java application, or as a service on a server, a cluster, and in the cloud. It integrates perfectly with Spring. With a rich Java and REST API, it is the ideal engine for orchestrating human or system activities.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */


package com.ibm.risk.irmp.workflow.client.flowable.model;

import java.util.Objects;
import com.fasterxml.jackson.annotation.JsonProperty;
import io.swagger.annotations.ApiModelProperty;
import java.time.OffsetDateTime;

/**
 * HistoricPlanItemInstanceQueryRequest
 */

public class HistoricPlanItemInstanceQueryRequest {
  @JsonProperty("start")
  private Integer start = null;

  @JsonProperty("size")
  private Integer size = null;

  @JsonProperty("sort")
  private String sort = null;

  @JsonProperty("order")
  private String order = null;

  @JsonProperty("planItemInstanceId")
  private String planItemInstanceId = null;

  @JsonProperty("planItemInstanceName")
  private String planItemInstanceName = null;

  @JsonProperty("planItemInstanceState")
  private String planItemInstanceState = null;

  @JsonProperty("caseDefinitionId")
  private String caseDefinitionId = null;

  @JsonProperty("caseInstanceId")
  private String caseInstanceId = null;

  @JsonProperty("stageInstanceId")
  private String stageInstanceId = null;

  @JsonProperty("elementId")
  private String elementId = null;

  @JsonProperty("planItemDefinitionId")
  private String planItemDefinitionId = null;

  @JsonProperty("planItemDefinitionType")
  private String planItemDefinitionType = null;

  @JsonProperty("createdBefore")
  private OffsetDateTime createdBefore = null;

  @JsonProperty("createdAfter")
  private OffsetDateTime createdAfter = null;

  @JsonProperty("lastAvailableBefore")
  private OffsetDateTime lastAvailableBefore = null;

  @JsonProperty("lastAvailableAfter")
  private OffsetDateTime lastAvailableAfter = null;

  @JsonProperty("lastEnabledBefore")
  private OffsetDateTime lastEnabledBefore = null;

  @JsonProperty("lastEnabledAfter")
  private OffsetDateTime lastEnabledAfter = null;

  @JsonProperty("lastDisabledBefore")
  private OffsetDateTime lastDisabledBefore = null;

  @JsonProperty("lastDisabledAfter")
  private OffsetDateTime lastDisabledAfter = null;

  @JsonProperty("lastStartedBefore")
  private OffsetDateTime lastStartedBefore = null;

  @JsonProperty("lastStartedAfter")
  private OffsetDateTime lastStartedAfter = null;

  @JsonProperty("lastSuspendedBefore")
  private OffsetDateTime lastSuspendedBefore = null;

  @JsonProperty("lastSuspendedAfter")
  private OffsetDateTime lastSuspendedAfter = null;

  @JsonProperty("completedBefore")
  private OffsetDateTime completedBefore = null;

  @JsonProperty("completedAfter")
  private OffsetDateTime completedAfter = null;

  @JsonProperty("terminatedBefore")
  private OffsetDateTime terminatedBefore = null;

  @JsonProperty("terminatedAfter")
  private OffsetDateTime terminatedAfter = null;

  @JsonProperty("occurredBefore")
  private OffsetDateTime occurredBefore = null;

  @JsonProperty("occurredAfter")
  private OffsetDateTime occurredAfter = null;

  @JsonProperty("exitBefore")
  private OffsetDateTime exitBefore = null;

  @JsonProperty("exitAfter")
  private OffsetDateTime exitAfter = null;

  @JsonProperty("endedBefore")
  private OffsetDateTime endedBefore = null;

  @JsonProperty("endedAfter")
  private OffsetDateTime endedAfter = null;

  @JsonProperty("startUserId")
  private String startUserId = null;

  @JsonProperty("referenceId")
  private String referenceId = null;

  @JsonProperty("referenceType")
  private String referenceType = null;

  @JsonProperty("tenantId")
  private String tenantId = null;

  @JsonProperty("withoutTenantId")
  private Boolean withoutTenantId = null;

  public HistoricPlanItemInstanceQueryRequest start(Integer start) {
    this.start = start;
    return this;
  }

   /**
   * Get start
   * @return start
  **/
  @ApiModelProperty(value = "")
  public Integer getStart() {
    return start;
  }

  public void setStart(Integer start) {
    this.start = start;
  }

  public HistoricPlanItemInstanceQueryRequest size(Integer size) {
    this.size = size;
    return this;
  }

   /**
   * Get size
   * @return size
  **/
  @ApiModelProperty(value = "")
  public Integer getSize() {
    return size;
  }

  public void setSize(Integer size) {
    this.size = size;
  }

  public HistoricPlanItemInstanceQueryRequest sort(String sort) {
    this.sort = sort;
    return this;
  }

   /**
   * Get sort
   * @return sort
  **/
  @ApiModelProperty(value = "")
  public String getSort() {
    return sort;
  }

  public void setSort(String sort) {
    this.sort = sort;
  }

  public HistoricPlanItemInstanceQueryRequest order(String order) {
    this.order = order;
    return this;
  }

   /**
   * Get order
   * @return order
  **/
  @ApiModelProperty(value = "")
  public String getOrder() {
    return order;
  }

  public void setOrder(String order) {
    this.order = order;
  }

  public HistoricPlanItemInstanceQueryRequest planItemInstanceId(String planItemInstanceId) {
    this.planItemInstanceId = planItemInstanceId;
    return this;
  }

   /**
   * Get planItemInstanceId
   * @return planItemInstanceId
  **/
  @ApiModelProperty(value = "")
  public String getPlanItemInstanceId() {
    return planItemInstanceId;
  }

  public void setPlanItemInstanceId(String planItemInstanceId) {
    this.planItemInstanceId = planItemInstanceId;
  }

  public HistoricPlanItemInstanceQueryRequest planItemInstanceName(String planItemInstanceName) {
    this.planItemInstanceName = planItemInstanceName;
    return this;
  }

   /**
   * Get planItemInstanceName
   * @return planItemInstanceName
  **/
  @ApiModelProperty(value = "")
  public String getPlanItemInstanceName() {
    return planItemInstanceName;
  }

  public void setPlanItemInstanceName(String planItemInstanceName) {
    this.planItemInstanceName = planItemInstanceName;
  }

  public HistoricPlanItemInstanceQueryRequest planItemInstanceState(String planItemInstanceState) {
    this.planItemInstanceState = planItemInstanceState;
    return this;
  }

   /**
   * Get planItemInstanceState
   * @return planItemInstanceState
  **/
  @ApiModelProperty(value = "")
  public String getPlanItemInstanceState() {
    return planItemInstanceState;
  }

  public void setPlanItemInstanceState(String planItemInstanceState) {
    this.planItemInstanceState = planItemInstanceState;
  }

  public HistoricPlanItemInstanceQueryRequest caseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = caseDefinitionId;
    return this;
  }

   /**
   * Get caseDefinitionId
   * @return caseDefinitionId
  **/
  @ApiModelProperty(value = "")
  public String getCaseDefinitionId() {
    return caseDefinitionId;
  }

  public void setCaseDefinitionId(String caseDefinitionId) {
    this.caseDefinitionId = caseDefinitionId;
  }

  public HistoricPlanItemInstanceQueryRequest caseInstanceId(String caseInstanceId) {
    this.caseInstanceId = caseInstanceId;
    return this;
  }

   /**
   * Get caseInstanceId
   * @return caseInstanceId
  **/
  @ApiModelProperty(value = "")
  public String getCaseInstanceId() {
    return caseInstanceId;
  }

  public void setCaseInstanceId(String caseInstanceId) {
    this.caseInstanceId = caseInstanceId;
  }

  public HistoricPlanItemInstanceQueryRequest stageInstanceId(String stageInstanceId) {
    this.stageInstanceId = stageInstanceId;
    return this;
  }

   /**
   * Get stageInstanceId
   * @return stageInstanceId
  **/
  @ApiModelProperty(value = "")
  public String getStageInstanceId() {
    return stageInstanceId;
  }

  public void setStageInstanceId(String stageInstanceId) {
    this.stageInstanceId = stageInstanceId;
  }

  public HistoricPlanItemInstanceQueryRequest elementId(String elementId) {
    this.elementId = elementId;
    return this;
  }

   /**
   * Get elementId
   * @return elementId
  **/
  @ApiModelProperty(value = "")
  public String getElementId() {
    return elementId;
  }

  public void setElementId(String elementId) {
    this.elementId = elementId;
  }

  public HistoricPlanItemInstanceQueryRequest planItemDefinitionId(String planItemDefinitionId) {
    this.planItemDefinitionId = planItemDefinitionId;
    return this;
  }

   /**
   * Get planItemDefinitionId
   * @return planItemDefinitionId
  **/
  @ApiModelProperty(value = "")
  public String getPlanItemDefinitionId() {
    return planItemDefinitionId;
  }

  public void setPlanItemDefinitionId(String planItemDefinitionId) {
    this.planItemDefinitionId = planItemDefinitionId;
  }

  public HistoricPlanItemInstanceQueryRequest planItemDefinitionType(String planItemDefinitionType) {
    this.planItemDefinitionType = planItemDefinitionType;
    return this;
  }

   /**
   * Get planItemDefinitionType
   * @return planItemDefinitionType
  **/
  @ApiModelProperty(value = "")
  public String getPlanItemDefinitionType() {
    return planItemDefinitionType;
  }

  public void setPlanItemDefinitionType(String planItemDefinitionType) {
    this.planItemDefinitionType = planItemDefinitionType;
  }

  public HistoricPlanItemInstanceQueryRequest createdBefore(OffsetDateTime createdBefore) {
    this.createdBefore = createdBefore;
    return this;
  }

   /**
   * Get createdBefore
   * @return createdBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getCreatedBefore() {
    return createdBefore;
  }

  public void setCreatedBefore(OffsetDateTime createdBefore) {
    this.createdBefore = createdBefore;
  }

  public HistoricPlanItemInstanceQueryRequest createdAfter(OffsetDateTime createdAfter) {
    this.createdAfter = createdAfter;
    return this;
  }

   /**
   * Get createdAfter
   * @return createdAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getCreatedAfter() {
    return createdAfter;
  }

  public void setCreatedAfter(OffsetDateTime createdAfter) {
    this.createdAfter = createdAfter;
  }

  public HistoricPlanItemInstanceQueryRequest lastAvailableBefore(OffsetDateTime lastAvailableBefore) {
    this.lastAvailableBefore = lastAvailableBefore;
    return this;
  }

   /**
   * Get lastAvailableBefore
   * @return lastAvailableBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastAvailableBefore() {
    return lastAvailableBefore;
  }

  public void setLastAvailableBefore(OffsetDateTime lastAvailableBefore) {
    this.lastAvailableBefore = lastAvailableBefore;
  }

  public HistoricPlanItemInstanceQueryRequest lastAvailableAfter(OffsetDateTime lastAvailableAfter) {
    this.lastAvailableAfter = lastAvailableAfter;
    return this;
  }

   /**
   * Get lastAvailableAfter
   * @return lastAvailableAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastAvailableAfter() {
    return lastAvailableAfter;
  }

  public void setLastAvailableAfter(OffsetDateTime lastAvailableAfter) {
    this.lastAvailableAfter = lastAvailableAfter;
  }

  public HistoricPlanItemInstanceQueryRequest lastEnabledBefore(OffsetDateTime lastEnabledBefore) {
    this.lastEnabledBefore = lastEnabledBefore;
    return this;
  }

   /**
   * Get lastEnabledBefore
   * @return lastEnabledBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastEnabledBefore() {
    return lastEnabledBefore;
  }

  public void setLastEnabledBefore(OffsetDateTime lastEnabledBefore) {
    this.lastEnabledBefore = lastEnabledBefore;
  }

  public HistoricPlanItemInstanceQueryRequest lastEnabledAfter(OffsetDateTime lastEnabledAfter) {
    this.lastEnabledAfter = lastEnabledAfter;
    return this;
  }

   /**
   * Get lastEnabledAfter
   * @return lastEnabledAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastEnabledAfter() {
    return lastEnabledAfter;
  }

  public void setLastEnabledAfter(OffsetDateTime lastEnabledAfter) {
    this.lastEnabledAfter = lastEnabledAfter;
  }

  public HistoricPlanItemInstanceQueryRequest lastDisabledBefore(OffsetDateTime lastDisabledBefore) {
    this.lastDisabledBefore = lastDisabledBefore;
    return this;
  }

   /**
   * Get lastDisabledBefore
   * @return lastDisabledBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastDisabledBefore() {
    return lastDisabledBefore;
  }

  public void setLastDisabledBefore(OffsetDateTime lastDisabledBefore) {
    this.lastDisabledBefore = lastDisabledBefore;
  }

  public HistoricPlanItemInstanceQueryRequest lastDisabledAfter(OffsetDateTime lastDisabledAfter) {
    this.lastDisabledAfter = lastDisabledAfter;
    return this;
  }

   /**
   * Get lastDisabledAfter
   * @return lastDisabledAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastDisabledAfter() {
    return lastDisabledAfter;
  }

  public void setLastDisabledAfter(OffsetDateTime lastDisabledAfter) {
    this.lastDisabledAfter = lastDisabledAfter;
  }

  public HistoricPlanItemInstanceQueryRequest lastStartedBefore(OffsetDateTime lastStartedBefore) {
    this.lastStartedBefore = lastStartedBefore;
    return this;
  }

   /**
   * Get lastStartedBefore
   * @return lastStartedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastStartedBefore() {
    return lastStartedBefore;
  }

  public void setLastStartedBefore(OffsetDateTime lastStartedBefore) {
    this.lastStartedBefore = lastStartedBefore;
  }

  public HistoricPlanItemInstanceQueryRequest lastStartedAfter(OffsetDateTime lastStartedAfter) {
    this.lastStartedAfter = lastStartedAfter;
    return this;
  }

   /**
   * Get lastStartedAfter
   * @return lastStartedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastStartedAfter() {
    return lastStartedAfter;
  }

  public void setLastStartedAfter(OffsetDateTime lastStartedAfter) {
    this.lastStartedAfter = lastStartedAfter;
  }

  public HistoricPlanItemInstanceQueryRequest lastSuspendedBefore(OffsetDateTime lastSuspendedBefore) {
    this.lastSuspendedBefore = lastSuspendedBefore;
    return this;
  }

   /**
   * Get lastSuspendedBefore
   * @return lastSuspendedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastSuspendedBefore() {
    return lastSuspendedBefore;
  }

  public void setLastSuspendedBefore(OffsetDateTime lastSuspendedBefore) {
    this.lastSuspendedBefore = lastSuspendedBefore;
  }

  public HistoricPlanItemInstanceQueryRequest lastSuspendedAfter(OffsetDateTime lastSuspendedAfter) {
    this.lastSuspendedAfter = lastSuspendedAfter;
    return this;
  }

   /**
   * Get lastSuspendedAfter
   * @return lastSuspendedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getLastSuspendedAfter() {
    return lastSuspendedAfter;
  }

  public void setLastSuspendedAfter(OffsetDateTime lastSuspendedAfter) {
    this.lastSuspendedAfter = lastSuspendedAfter;
  }

  public HistoricPlanItemInstanceQueryRequest completedBefore(OffsetDateTime completedBefore) {
    this.completedBefore = completedBefore;
    return this;
  }

   /**
   * Get completedBefore
   * @return completedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getCompletedBefore() {
    return completedBefore;
  }

  public void setCompletedBefore(OffsetDateTime completedBefore) {
    this.completedBefore = completedBefore;
  }

  public HistoricPlanItemInstanceQueryRequest completedAfter(OffsetDateTime completedAfter) {
    this.completedAfter = completedAfter;
    return this;
  }

   /**
   * Get completedAfter
   * @return completedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getCompletedAfter() {
    return completedAfter;
  }

  public void setCompletedAfter(OffsetDateTime completedAfter) {
    this.completedAfter = completedAfter;
  }

  public HistoricPlanItemInstanceQueryRequest terminatedBefore(OffsetDateTime terminatedBefore) {
    this.terminatedBefore = terminatedBefore;
    return this;
  }

   /**
   * Get terminatedBefore
   * @return terminatedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getTerminatedBefore() {
    return terminatedBefore;
  }

  public void setTerminatedBefore(OffsetDateTime terminatedBefore) {
    this.terminatedBefore = terminatedBefore;
  }

  public HistoricPlanItemInstanceQueryRequest terminatedAfter(OffsetDateTime terminatedAfter) {
    this.terminatedAfter = terminatedAfter;
    return this;
  }

   /**
   * Get terminatedAfter
   * @return terminatedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getTerminatedAfter() {
    return terminatedAfter;
  }

  public void setTerminatedAfter(OffsetDateTime terminatedAfter) {
    this.terminatedAfter = terminatedAfter;
  }

  public HistoricPlanItemInstanceQueryRequest occurredBefore(OffsetDateTime occurredBefore) {
    this.occurredBefore = occurredBefore;
    return this;
  }

   /**
   * Get occurredBefore
   * @return occurredBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getOccurredBefore() {
    return occurredBefore;
  }

  public void setOccurredBefore(OffsetDateTime occurredBefore) {
    this.occurredBefore = occurredBefore;
  }

  public HistoricPlanItemInstanceQueryRequest occurredAfter(OffsetDateTime occurredAfter) {
    this.occurredAfter = occurredAfter;
    return this;
  }

   /**
   * Get occurredAfter
   * @return occurredAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getOccurredAfter() {
    return occurredAfter;
  }

  public void setOccurredAfter(OffsetDateTime occurredAfter) {
    this.occurredAfter = occurredAfter;
  }

  public HistoricPlanItemInstanceQueryRequest exitBefore(OffsetDateTime exitBefore) {
    this.exitBefore = exitBefore;
    return this;
  }

   /**
   * Get exitBefore
   * @return exitBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getExitBefore() {
    return exitBefore;
  }

  public void setExitBefore(OffsetDateTime exitBefore) {
    this.exitBefore = exitBefore;
  }

  public HistoricPlanItemInstanceQueryRequest exitAfter(OffsetDateTime exitAfter) {
    this.exitAfter = exitAfter;
    return this;
  }

   /**
   * Get exitAfter
   * @return exitAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getExitAfter() {
    return exitAfter;
  }

  public void setExitAfter(OffsetDateTime exitAfter) {
    this.exitAfter = exitAfter;
  }

  public HistoricPlanItemInstanceQueryRequest endedBefore(OffsetDateTime endedBefore) {
    this.endedBefore = endedBefore;
    return this;
  }

   /**
   * Get endedBefore
   * @return endedBefore
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getEndedBefore() {
    return endedBefore;
  }

  public void setEndedBefore(OffsetDateTime endedBefore) {
    this.endedBefore = endedBefore;
  }

  public HistoricPlanItemInstanceQueryRequest endedAfter(OffsetDateTime endedAfter) {
    this.endedAfter = endedAfter;
    return this;
  }

   /**
   * Get endedAfter
   * @return endedAfter
  **/
  @ApiModelProperty(value = "")
  public OffsetDateTime getEndedAfter() {
    return endedAfter;
  }

  public void setEndedAfter(OffsetDateTime endedAfter) {
    this.endedAfter = endedAfter;
  }

  public HistoricPlanItemInstanceQueryRequest startUserId(String startUserId) {
    this.startUserId = startUserId;
    return this;
  }

   /**
   * Get startUserId
   * @return startUserId
  **/
  @ApiModelProperty(value = "")
  public String getStartUserId() {
    return startUserId;
  }

  public void setStartUserId(String startUserId) {
    this.startUserId = startUserId;
  }

  public HistoricPlanItemInstanceQueryRequest referenceId(String referenceId) {
    this.referenceId = referenceId;
    return this;
  }

   /**
   * Get referenceId
   * @return referenceId
  **/
  @ApiModelProperty(value = "")
  public String getReferenceId() {
    return referenceId;
  }

  public void setReferenceId(String referenceId) {
    this.referenceId = referenceId;
  }

  public HistoricPlanItemInstanceQueryRequest referenceType(String referenceType) {
    this.referenceType = referenceType;
    return this;
  }

   /**
   * Get referenceType
   * @return referenceType
  **/
  @ApiModelProperty(value = "")
  public String getReferenceType() {
    return referenceType;
  }

  public void setReferenceType(String referenceType) {
    this.referenceType = referenceType;
  }

  public HistoricPlanItemInstanceQueryRequest tenantId(String tenantId) {
    this.tenantId = tenantId;
    return this;
  }

   /**
   * Get tenantId
   * @return tenantId
  **/
  @ApiModelProperty(value = "")
  public String getTenantId() {
    return tenantId;
  }

  public void setTenantId(String tenantId) {
    this.tenantId = tenantId;
  }

  public HistoricPlanItemInstanceQueryRequest withoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = withoutTenantId;
    return this;
  }

   /**
   * Get withoutTenantId
   * @return withoutTenantId
  **/
  @ApiModelProperty(value = "")
  public Boolean getWithoutTenantId() {
    return withoutTenantId;
  }

  public void setWithoutTenantId(Boolean withoutTenantId) {
    this.withoutTenantId = withoutTenantId;
  }


  @Override
  public boolean equals(java.lang.Object o) {
    if (this == o) {
      return true;
    }
    if (o == null || getClass() != o.getClass()) {
      return false;
    }
    HistoricPlanItemInstanceQueryRequest historicPlanItemInstanceQueryRequest = (HistoricPlanItemInstanceQueryRequest) o;
    return Objects.equals(this.start, historicPlanItemInstanceQueryRequest.start) &&
        Objects.equals(this.size, historicPlanItemInstanceQueryRequest.size) &&
        Objects.equals(this.sort, historicPlanItemInstanceQueryRequest.sort) &&
        Objects.equals(this.order, historicPlanItemInstanceQueryRequest.order) &&
        Objects.equals(this.planItemInstanceId, historicPlanItemInstanceQueryRequest.planItemInstanceId) &&
        Objects.equals(this.planItemInstanceName, historicPlanItemInstanceQueryRequest.planItemInstanceName) &&
        Objects.equals(this.planItemInstanceState, historicPlanItemInstanceQueryRequest.planItemInstanceState) &&
        Objects.equals(this.caseDefinitionId, historicPlanItemInstanceQueryRequest.caseDefinitionId) &&
        Objects.equals(this.caseInstanceId, historicPlanItemInstanceQueryRequest.caseInstanceId) &&
        Objects.equals(this.stageInstanceId, historicPlanItemInstanceQueryRequest.stageInstanceId) &&
        Objects.equals(this.elementId, historicPlanItemInstanceQueryRequest.elementId) &&
        Objects.equals(this.planItemDefinitionId, historicPlanItemInstanceQueryRequest.planItemDefinitionId) &&
        Objects.equals(this.planItemDefinitionType, historicPlanItemInstanceQueryRequest.planItemDefinitionType) &&
        Objects.equals(this.createdBefore, historicPlanItemInstanceQueryRequest.createdBefore) &&
        Objects.equals(this.createdAfter, historicPlanItemInstanceQueryRequest.createdAfter) &&
        Objects.equals(this.lastAvailableBefore, historicPlanItemInstanceQueryRequest.lastAvailableBefore) &&
        Objects.equals(this.lastAvailableAfter, historicPlanItemInstanceQueryRequest.lastAvailableAfter) &&
        Objects.equals(this.lastEnabledBefore, historicPlanItemInstanceQueryRequest.lastEnabledBefore) &&
        Objects.equals(this.lastEnabledAfter, historicPlanItemInstanceQueryRequest.lastEnabledAfter) &&
        Objects.equals(this.lastDisabledBefore, historicPlanItemInstanceQueryRequest.lastDisabledBefore) &&
        Objects.equals(this.lastDisabledAfter, historicPlanItemInstanceQueryRequest.lastDisabledAfter) &&
        Objects.equals(this.lastStartedBefore, historicPlanItemInstanceQueryRequest.lastStartedBefore) &&
        Objects.equals(this.lastStartedAfter, historicPlanItemInstanceQueryRequest.lastStartedAfter) &&
        Objects.equals(this.lastSuspendedBefore, historicPlanItemInstanceQueryRequest.lastSuspendedBefore) &&
        Objects.equals(this.lastSuspendedAfter, historicPlanItemInstanceQueryRequest.lastSuspendedAfter) &&
        Objects.equals(this.completedBefore, historicPlanItemInstanceQueryRequest.completedBefore) &&
        Objects.equals(this.completedAfter, historicPlanItemInstanceQueryRequest.completedAfter) &&
        Objects.equals(this.terminatedBefore, historicPlanItemInstanceQueryRequest.terminatedBefore) &&
        Objects.equals(this.terminatedAfter, historicPlanItemInstanceQueryRequest.terminatedAfter) &&
        Objects.equals(this.occurredBefore, historicPlanItemInstanceQueryRequest.occurredBefore) &&
        Objects.equals(this.occurredAfter, historicPlanItemInstanceQueryRequest.occurredAfter) &&
        Objects.equals(this.exitBefore, historicPlanItemInstanceQueryRequest.exitBefore) &&
        Objects.equals(this.exitAfter, historicPlanItemInstanceQueryRequest.exitAfter) &&
        Objects.equals(this.endedBefore, historicPlanItemInstanceQueryRequest.endedBefore) &&
        Objects.equals(this.endedAfter, historicPlanItemInstanceQueryRequest.endedAfter) &&
        Objects.equals(this.startUserId, historicPlanItemInstanceQueryRequest.startUserId) &&
        Objects.equals(this.referenceId, historicPlanItemInstanceQueryRequest.referenceId) &&
        Objects.equals(this.referenceType, historicPlanItemInstanceQueryRequest.referenceType) &&
        Objects.equals(this.tenantId, historicPlanItemInstanceQueryRequest.tenantId) &&
        Objects.equals(this.withoutTenantId, historicPlanItemInstanceQueryRequest.withoutTenantId);
  }

  @Override
  public int hashCode() {
    return Objects.hash(start, size, sort, order, planItemInstanceId, planItemInstanceName, planItemInstanceState, caseDefinitionId, caseInstanceId, stageInstanceId, elementId, planItemDefinitionId, planItemDefinitionType, createdBefore, createdAfter, lastAvailableBefore, lastAvailableAfter, lastEnabledBefore, lastEnabledAfter, lastDisabledBefore, lastDisabledAfter, lastStartedBefore, lastStartedAfter, lastSuspendedBefore, lastSuspendedAfter, completedBefore, completedAfter, terminatedBefore, terminatedAfter, occurredBefore, occurredAfter, exitBefore, exitAfter, endedBefore, endedAfter, startUserId, referenceId, referenceType, tenantId, withoutTenantId);
  }


  @Override
  public String toString() {
    StringBuilder sb = new StringBuilder();
    sb.append("class HistoricPlanItemInstanceQueryRequest {\n");

    sb.append("    start: ").append(toIndentedString(start)).append("\n");
    sb.append("    size: ").append(toIndentedString(size)).append("\n");
    sb.append("    sort: ").append(toIndentedString(sort)).append("\n");
    sb.append("    order: ").append(toIndentedString(order)).append("\n");
    sb.append("    planItemInstanceId: ").append(toIndentedString(planItemInstanceId)).append("\n");
    sb.append("    planItemInstanceName: ").append(toIndentedString(planItemInstanceName)).append("\n");
    sb.append("    planItemInstanceState: ").append(toIndentedString(planItemInstanceState)).append("\n");
    sb.append("    caseDefinitionId: ").append(toIndentedString(caseDefinitionId)).append("\n");
    sb.append("    caseInstanceId: ").append(toIndentedString(caseInstanceId)).append("\n");
    sb.append("    stageInstanceId: ").append(toIndentedString(stageInstanceId)).append("\n");
    sb.append("    elementId: ").append(toIndentedString(elementId)).append("\n");
    sb.append("    planItemDefinitionId: ").append(toIndentedString(planItemDefinitionId)).append("\n");
    sb.append("    planItemDefinitionType: ").append(toIndentedString(planItemDefinitionType)).append("\n");
    sb.append("    createdBefore: ").append(toIndentedString(createdBefore)).append("\n");
    sb.append("    createdAfter: ").append(toIndentedString(createdAfter)).append("\n");
    sb.append("    lastAvailableBefore: ").append(toIndentedString(lastAvailableBefore)).append("\n");
    sb.append("    lastAvailableAfter: ").append(toIndentedString(lastAvailableAfter)).append("\n");
    sb.append("    lastEnabledBefore: ").append(toIndentedString(lastEnabledBefore)).append("\n");
    sb.append("    lastEnabledAfter: ").append(toIndentedString(lastEnabledAfter)).append("\n");
    sb.append("    lastDisabledBefore: ").append(toIndentedString(lastDisabledBefore)).append("\n");
    sb.append("    lastDisabledAfter: ").append(toIndentedString(lastDisabledAfter)).append("\n");
    sb.append("    lastStartedBefore: ").append(toIndentedString(lastStartedBefore)).append("\n");
    sb.append("    lastStartedAfter: ").append(toIndentedString(lastStartedAfter)).append("\n");
    sb.append("    lastSuspendedBefore: ").append(toIndentedString(lastSuspendedBefore)).append("\n");
    sb.append("    lastSuspendedAfter: ").append(toIndentedString(lastSuspendedAfter)).append("\n");
    sb.append("    completedBefore: ").append(toIndentedString(completedBefore)).append("\n");
    sb.append("    completedAfter: ").append(toIndentedString(completedAfter)).append("\n");
    sb.append("    terminatedBefore: ").append(toIndentedString(terminatedBefore)).append("\n");
    sb.append("    terminatedAfter: ").append(toIndentedString(terminatedAfter)).append("\n");
    sb.append("    occurredBefore: ").append(toIndentedString(occurredBefore)).append("\n");
    sb.append("    occurredAfter: ").append(toIndentedString(occurredAfter)).append("\n");
    sb.append("    exitBefore: ").append(toIndentedString(exitBefore)).append("\n");
    sb.append("    exitAfter: ").append(toIndentedString(exitAfter)).append("\n");
    sb.append("    endedBefore: ").append(toIndentedString(endedBefore)).append("\n");
    sb.append("    endedAfter: ").append(toIndentedString(endedAfter)).append("\n");
    sb.append("    startUserId: ").append(toIndentedString(startUserId)).append("\n");
    sb.append("    referenceId: ").append(toIndentedString(referenceId)).append("\n");
    sb.append("    referenceType: ").append(toIndentedString(referenceType)).append("\n");
    sb.append("    tenantId: ").append(toIndentedString(tenantId)).append("\n");
    sb.append("    withoutTenantId: ").append(toIndentedString(withoutTenantId)).append("\n");
    sb.append("}");
    return sb.toString();
  }

  /**
   * Convert the given object to string with each line indented by 4 spaces
   * (except the first line).
   */
  private String toIndentedString(java.lang.Object o) {
    if (o == null) {
      return "null";
    }
    return o.toString().replace("\n", "\n    ");
  }

}
